Zum Hauptinhalt springen

Ereignisse

Admin Power Pack tauscht Ereignisse („FpEvents") mit anderen Fluxpunkt-Modulen aus: Es empfängt Steuerereignisse, die dieselben Wartungs- und Systemaktionen auslösen wie die XML-RPC-Befehle und die HTTP-API, und sendet je Wartungsaktion ein Abschlussereignis mit dem Ergebnis — nur die Systemaktionen Neustart und Update senden keines. Typische Konsumenten sind EventBridge (Weiterleitung als Webhook, E-Mail, Syslog oder Datenbankeintrag) und eigene STARFACE-Module, die Ereignisse direkt abonnieren oder senden. Seit Modulversion 26.8.19 sendet Admin Power Pack zusätzlich das Audit-Ereignis McpToolCalledEvent für jeden Aufruf des MCP-Servers.

Verwendung durch Dritte

Diese Schnittstelle ist für die Nutzung durch Drittsysteme freigegeben. Änderungen und Erweiterungen werden je Version in den Release Notes dokumentiert.

Grundlagen

  • Typ: FpEvents — der modulübergreifende Ereignismechanismus der Fluxpunkt-Module auf dem anlageninternen Ereignisbus. Es handelt sich um keine Netzwerkschnittstelle: Ereignisse sind nur innerhalb der Anlage erreichbar; nach außen gelangen sie über EventBridge.
  • Identifikator: der Ereignisname, z. B. ExecuteDeleteLogs oder LogsDeletedEvent. Die Namen sind anlagenweit gültig und unabhängig vom Namen der Modulkonfiguration.
  • Nutzlast: ein JSON-Objekt. Felder ohne Wert (null) entfallen in der Nutzlast; unbekannte Felder werden beim Empfang ignoriert.
  • Zugriff: EventBridge abonniert Ereignisse per Konfiguration und kann Steuerereignisse als Aktion senden. Eigene Module verwenden die Modulfunktionen FpEvent abonnieren / FpEvent senden — Download und Anleitung im Artikel Schnittstellen & APIs. Zusätzlich sendet Admin Power Pack die Wartungs-Steuerereignisse selbst zeitgesteuert über die Geplanten Aktionen im Tab STARFACE Verwaltung; die Systemaktions-Ereignisse planen stattdessen über ihr Feld executeAt.
  • Lizenz: Die Ausführung empfangener Steuerereignisse ist lizenzgebunden — ohne gültige Modullizenz werden sie verworfen (Eintrag im Modul-Log).
  • Verfügbar seit: Wartungsereignisse Modulversion 26.6.12, Benutzervorlagen-Ereignisse Modulversion 26.5.8; die Systemaktions-Ereignisse ExecuteStarfaceRestart und ExecuteStarfaceUpdate sowie das MCP-Audit-Ereignis McpToolCalledEvent seit Modulversion 26.8.19

Gemeinsame Felder

Alle Wartungsereignisse — Steuer- wie Abschlussereignisse — tragen zwei gemeinsame Felder:

FeldTypBeschreibung
triggerStringHerkunft der Ausführung: EVENT (anderes Modul/Ereignis), TIMER (Geplante Aktion), MANUAL (Schaltfläche in der Moduloberfläche), API (XML-RPC- oder HTTP-API-Aufruf). In Steuerereignissen optional; fehlt der Wert oder ist er unbekannt, gilt EVENT. Das Abschlussereignis übernimmt den Wert des auslösenden Steuerereignisses.
timerNameString, optionalName der Geplanten Aktion, die den Befehl ausgelöst hat; nur bei trigger = TIMER gesetzt, sonst nicht enthalten.

Empfangene Steuerereignisse

Jedes Steuerereignis löst genau eine Wartungsaktion aus. Die Felder und ihre Bedeutung entsprechen den Parametern des jeweiligen XML-RPC-Befehls — zuzüglich der gemeinsamen Felder.

EreignisWirkungFelder (zusätzlich zu trigger, timerName)
ExecuteAutoCleanupAuto-Cleanup ausführen
ExecuteDeleteSystemMessagesSystemmeldungen löschen
ExecuteDeleteLogsLogdateien löschenscope: old | all (Standard old)
ExecuteDeleteTemporaryFilesTemporäre Dateien löschen
ExecuteDeleteRecordingsGesprächsaufzeichnungen löschen
ExecuteDeleteFaxesFaxe löschen
ExecuteDeleteCallDataRuflisteneinträge löschenstartTime, endTime (Zeitstempel in ms), incoming, outgoing, missed, answered (Boolean, Standard true), filter (String), confirmed (Boolean, muss true sein)
ExecuteDeleteFirmwareFirmware-Dateien löschenvendor: all | snom | yealink | gigaset | other (Standard all)
ExecuteDeleteBackupsSicherungen löschenscope: all | allExceptLast (Standard allExceptLast)
ExecuteReRegisterTrunksLeitungen neu anmelden
ExecuteHangupAllCallsAlle Gespräche beenden
ExecuteProvisionDevicesEndgeräte provisionierentype: check-sync | check-sync-reboot | reboot-snom | factory-reset-snom | factory-reset-yealink (Pflicht)

Beispiel-Nutzlasten — ein parameterloses Steuerereignis und zwei mit Parametern:

ExecuteAutoCleanup
{
"trigger": "TIMER"
}
ExecuteDeleteLogs
{
"scope": "old",
"trigger": "TIMER"
}
ExecuteDeleteCallData
{
"startTime": 0,
"endTime": 1767225600000,
"incoming": true,
"outgoing": true,
"missed": true,
"answered": true,
"filter": "+4972112345678",
"confirmed": true,
"trigger": "EVENT"
}

ExecuteDeleteCallData ohne confirmed = true und ExecuteProvisionDevices ohne type werden still verworfen.

ExecuteUserTemplate — Benutzervorlage anwenden

Zusätzlich zu den Wartungsbefehlen empfängt Admin Power Pack ein Steuerereignis, das eine Benutzervorlage aus dem Tab Benutzer & Gruppen auf STARFACE-Benutzer anwendet. Gruppen in accountIds werden transitiv zu ihren Mitgliedern aufgelöst.

FeldTypPflichtBeschreibung
templateIdStringjaID der Benutzervorlage. Ereignisse mit unbekannter ID werden verworfen.
accountIdsArray von IntegerjaAccount-IDs der Zielbenutzer oder -gruppen; leere Listen werden verworfen.
includeAdminsBooleanneinAuch Benutzer mit Administrationsrecht einbeziehen (Standard false).
ExecuteUserTemplate
{
"templateId": "3f2b7c9e-5d41-4c8a-9b1f-2a6d8e4f7c10",
"accountIds": [12, 17, 23],
"includeAdmins": false
}

Systemaktionen

Verfügbar seit Modulversion 26.8.19

Die beiden Systemaktions-Ereignisse sind seit Modulversion 26.8.19 enthalten; ältere Modulversionen ignorieren sie.

Admin Power Pack empfängt zwei Steuerereignisse für die Systemaktionen der Karte Setup & Recovery: STARFACE-Neustart und STARFACE-Update — sofort oder einmalig zu einem geplanten Zeitpunkt (executeAt). Eine zukünftige Planung wird gespeichert, überdauert Modul-Neustarts und wird durch ein neues Ereignis ersetzt; die Moduloberfläche zeigt sie an und kann sie abbrechen. Verstreicht ein geplanter Zeitpunkt, während Modul oder Anlage nicht laufen, holt das Modul die Aktion kurz nach dem nächsten Modulstart nach (etwa 30 Sekunden Verzögerung).

EreignisWirkungFelder (zusätzlich zu trigger, timerName)
ExecuteStarfaceRestartSTARFACE neu starten — entspricht RestartStarfacemode: service (nur STARFACE-Dienste, Standard) | server (kompletter Server); executeAt: ISO-8601-Zeitpunkt (JJJJ-MM-TTThh:mm, Anlagenzeit) — leer/vergangen = sofort, zukünftig = einmalig geplant
ExecuteStarfaceUpdateSTARFACE-Update ausführen — entspricht UpdateStarfaceversion: verfügbare Zielversion; latest oder leer = neueste angebotene Version (inkl. Beta, falls in der Anlage aktiviert); executeAt: wie bei ExecuteStarfaceRestart

Beide Aktionen senden kein Abschlussereignis — Neustart bzw. Update beenden die STARFACE-Dienste, eine Bestätigung ist danach nicht mehr möglich. trigger und timerName dürfen mitgesendet werden, bleiben ohne Abschlussereignis aber ohne sichtbare Wirkung. ExecuteStarfaceRestart mit ungültigem mode und ExecuteStarfaceUpdate mit nicht verfügbarer Zielversion werden still verworfen (Log-Eintrag).

ExecuteStarfaceRestart
{
"mode": "service",
"executeAt": "2026-08-12T22:00",
"trigger": "EVENT"
}
ExecuteStarfaceUpdate
{
"version": "latest",
"executeAt": "2026-08-12T22:00",
"trigger": "EVENT"
}

Gesendete Abschlussereignisse

Nach jeder ausgeführten Wartungsaktion veröffentlicht Admin Power Pack genau ein Abschlussereignis. Es bestätigt die tatsächliche Ausführung — im Gegensatz zur XML-RPC-Antwort, die nur die Annahme meldet — und übernimmt trigger und timerName des Auslösers. Die Systemaktionen Neustart und Update senden kein Abschlussereignis.

EreignisFolgt aufFelder (zusätzlich zu trigger, timerName)
AutoCleanupExecutedEventExecuteAutoCleanup
SystemMessagesDeletedEventExecuteDeleteSystemMessages
LogsDeletedEventExecuteDeleteLogsscope — der wirksame Umfang (old/all)
TemporaryFilesDeletedEventExecuteDeleteTemporaryFiles
RecordingsDeletedEventExecuteDeleteRecordings
FaxesDeletedEventExecuteDeleteFaxes
CallDataDeletedEventExecuteDeleteCallDatadeletedSummary (Integer) — gelöschte Ruflisteneinträge; deletedData (Integer) — gelöschte Detailzeilen; message (String) — Ergebnistext
FirmwareDeletedEventExecuteDeleteFirmwarevendor — der wirksame Hersteller
BackupsDeletedEventExecuteDeleteBackupsscope — der wirksame Umfang (all/allExceptLast)
TrunksReRegisteredEventExecuteReRegisterTrunks
AllCallsHungUpEventExecuteHangupAllCalls
DevicesProvisionedEventExecuteProvisionDevicestype — der gesendete Provisionierungstyp

message in CallDataDeletedEvent nimmt einen der folgenden Werte an: „Alle Ruflisteneinträge wurden gelöscht." (vollständige Löschung), „Ruflisteneinträge wurden gelöscht." (Zeit-/Kategorienfilter), „Gefilterte Ruflisteneinträge wurden gelöscht." (Rufnummern-/Namensfilter) oder „Fehler beim Löschen." (Abbruch, Zähler dann 0).

Beispiel-Nutzlasten:

AutoCleanupExecutedEvent — ausgelöst durch eine Geplante Aktion
{
"trigger": "TIMER",
"timerName": "Nächtliche Bereinigung"
}
LogsDeletedEvent — ausgelöst per XML-RPC
{
"scope": "old",
"trigger": "API"
}
CallDataDeletedEvent
{
"deletedSummary": 1284,
"deletedData": 5210,
"message": "Ruflisteneinträge wurden gelöscht.",
"trigger": "API"
}
DevicesProvisionedEvent
{
"type": "check-sync-reboot",
"trigger": "API"
}
Anwendungsbeispiel

Sie stoßen abends per XML-RPC eine Provisionierung mit check-sync-reboot an. EventBridge abonniert DevicesProvisionedEvent und meldet den Abschluss als Nachricht in Ihren Teams-Kanal — Ihr Deployment-Skript muss nicht pollen, und das Protokoll zeigt, ob der Rollout zeitgesteuert oder per API lief.

UserTemplateExecutedEvent — Benutzervorlage angewendet

Wird nach jeder Anwendung einer Benutzervorlage veröffentlicht — gleich, ob sie manuell in der Oberfläche, über einen Vorlagen-Timer oder per ExecuteUserTemplate ausgelöst wurde. Bei Timer-Ausführung erscheint das Ereignis je angewendeter Vorlage mehrfach (einmal je Zielbenutzer), jeweils mit der vollständigen Kontenliste.

FeldTypBeschreibung
templateIdStringID der angewendeten Benutzervorlage.
templateNameStringName der Benutzervorlage.
accountIdsArray von IntegerAccount-IDs der Zielbenutzer (Gruppen bereits aufgelöst).
includeAdminsBooleanOb Administratoren einbezogen wurden.
triggerStringMANUAL (Oberfläche), TIMER (Vorlagen-Timer) oder EVENT (ExecuteUserTemplate). Der Wert API kommt hier nicht vor.
timerNameString, optionalName des Vorlagen-Timers; nur bei trigger = TIMER.
UserTemplateExecutedEvent
{
"templateId": "3f2b7c9e-5d41-4c8a-9b1f-2a6d8e4f7c10",
"templateName": "Standard-Benutzer",
"accountIds": [12, 17, 23],
"includeAdmins": false,
"trigger": "TIMER",
"timerName": "Nächtlicher Abgleich"
}

MCP-Audit-Ereignis (McpToolCalledEvent)

Der MCP-Server veröffentlicht für jede Anfrage, die seinen Endpunkt erreicht, ein McpToolCalledEvent — für erfolgreiche Werkzeugaufrufe ebenso wie für abgewiesene. Das Modul führt bewusst keine eigene Audit-Tabelle: Wer den MCP-Zugriff protokollieren will, abonniert dieses Ereignis (typisch: Weiterleitung an Syslog über EventBridge). Die Argumente des Werkzeugaufrufs sind nicht enthalten — sie können Klartext-Kundendaten tragen; was der Aufruf berührt hat, fasst target zusammen.

FeldTypBeschreibung
timestampIntegerZeitpunkt der Beantwortung (Millisekunden-Zeitstempel).
tokenLabelStringBezeichnung des authentifizierenden API-Tokens — nie der Token selbst. Entfällt, wenn die Anfrage vor der Token-Prüfung abgewiesen wurde.
remoteAddrStringQuelladresse — bei vertrauenswürdigem Proxy die aufgelöste Client-Adresse.
toolStringWerkzeugname, z. B. status_overview. Entfällt, wenn die Anfrage vor der Werkzeugauflösung abgewiesen wurde.
operationStringOperation innerhalb des Werkzeugs, z. B. get. Entfällt, wenn nicht aufgelöst.
modeStringWirksamer Modus des Werkzeugs zum Aufrufzeitpunkt: READ oder READ_WRITE.
destructiveBooleanOb die Operation als destruktiv eingestuft ist.
confirmedBooleanOb der Aufrufer confirm: true übergeben hat.
durationMsIntegerDauer des Aufrufs in Millisekunden.
resultCharsIntegerGröße des serialisierten Ergebnisses in Zeichen; 0 bei abgewiesenen Aufrufen.
outcomeStringAusgang: OK, TOOL_ERROR (fachlicher Fehler), DENIED_IP, DENIED_TOKEN, DENIED_LICENSE, DENIED_TOOL_DISABLED (Server aus oder Werkzeug nicht freigegeben), DENIED_READ_ONLY, DENIED_UNCONFIRMED (destruktiv ohne confirm: true) oder FAILED (interner Fehler).
targetString, optionalKurze, unkritische Zusammenfassung dessen, was der Aufruf berührt hat.
errorString, optionalFehlertext bei fehlgeschlagenen Aufrufen.
McpToolCalledEvent — erfolgreicher Leseaufruf
{
"timestamp": 1755640800000,
"tokenLabel": "Claude Code (F. Wolf)",
"remoteAddr": "192.168.10.42",
"tool": "status_trunks",
"operation": "lines",
"mode": "READ",
"destructive": false,
"confirmed": false,
"durationMs": 184,
"resultChars": 2311,
"outcome": "OK"
}
McpToolCalledEvent — abgewiesener Aufruf (Token ungültig)
{
"timestamp": 1755640860000,
"remoteAddr": "203.0.113.7",
"destructive": false,
"confirmed": false,
"durationMs": 0,
"resultChars": 0,
"outcome": "DENIED_TOKEN"
}

Die DENIED_…-Einträge sind gerade die, die in ein Syslog gehören: Sie zeigen abgewiesene Zugriffsversuche mit Quelladresse und Grund.

Fehlerbehandlung

Der Ereignisweg arbeitet nach dem Fire-and-forget-Prinzip: Es gibt keine Fehlerereignisse und keine Empfangsbestätigung. Ein Steuerereignis, das nicht ausgeführt wird, bleibt ohne Abschlussereignis; die Ursache steht im Modul-Log:

SituationVerhalten
Keine gültige ModullizenzSteuerereignis wird verworfen (Log-Eintrag).
ExecuteDeleteCallData ohne confirmed = trueVerworfen — die Löschung ist unwiderruflich und verlangt die ausdrückliche Bestätigung.
ExecuteProvisionDevices ohne typeVerworfen.
ExecuteUserTemplate mit unbekannter templateId oder leerer KontenlisteVerworfen.
ExecuteStarfaceRestart mit ungültigem modeVerworfen (Log-Eintrag).
ExecuteStarfaceUpdate mit nicht verfügbarer Zielversion oder ohne verfügbares UpdateVerworfen (Log-Eintrag).
Unbekannte Felder in der NutzlastWerden ignoriert; das Ereignis wird normal verarbeitet.
Unbekannter Wert in triggerWird wie EVENT behandelt.

Ausbleibende Abschlussereignisse sind damit das Signal, im Modul-Log nachzusehen — außer bei den Systemaktionen Neustart und Update, die grundsätzlich keines senden.

Versionierung & Kompatibilität

Ereignisnamen und Feldnamen sind stabile Verträge; Erweiterungen erfolgen additiv (neue Ereignisse, neue optionale Felder). Verarbeiten Sie Nutzlasten daher tolerant gegenüber zusätzlichen Feldern. Den anlagenweiten Ereigniskatalog mit Beispiel-Nutzlasten führt die Ereignisliste der EventBridge-Dokumentation; Änderungen an den Ereignissen dokumentieren die Release Notes der jeweiligen Modulversion.